import { IApiControl } from './BaseInterface'
import { formdata, getQueryString } from './Utils'
import BaseRequest from "./BaseRequest";

/**
 * 快捷请求方法类
 * 子类需继承并重写 apiMain 方法才可用
 */
export default class BaseQuickRequest extends BaseRequest {
    /**
     * GET
     * @param url 请求地址
     * @param params 请求参数
     * @param config 拓展参数
     * @returns 
     */
    get(url: string, params?: any, apiControl?: IApiControl): Promise<any> {
        return this.apiMain({
            url,
            params
        }, apiControl)
    }
    /**
     * POST-FORMDATA
     * @param url 请求地址
     * @param data 请求参数
     * @param config 拓展参数
     * @returns 
     */
    postFormData(url: string, data?: any, apiControl?: IApiControl): Promise<any> {
        return this.apiMain({
            url,
            data: formdata(data),
            method: 'post',
            headers: { 'content-type': 'multipart/form-data;' }
        }, apiControl)
    }
    /**
     * POST-URL
     * @param url 请求地址
     * @param data 请求参数
     * @param config 拓展参数
     * @returns 
     */
    postFormUrl(url: string, data?: any, apiControl?: IApiControl): Promise<any> {
        return this.apiMain({
            url,
            data: getQueryString(data),
            method: 'post',
            headers: { 'content-type': 'application/x-www-form-urlencoded' }
        }, apiControl)
    }
    /**
     * POST-JSON
     * @param url 请求地址
     * @param data 请求参数
     * @param config 拓展参数
     * @returns 
     */
    postJson(url: string, data?: any, apiControl?: IApiControl): Promise<any> {
        return this.apiMain({
            url,
            data,
            method: 'post',
            headers: { 'content-type': 'application/json;charset=UTF-8' }
        }, apiControl)
    }
}